package com.ltx.blog_ltx.mapper;


import com.ltx.blog_ltx.entity.dto.DoOjTable;
import com.ltx.blog_ltx.entity.dto.OJDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Mapper
public interface OJMapper {

    List<OJDto> AllOj();        //所有的oj的题目

    List<DoOjTable> AllDoOjTable(); //所有用户做过的oj题目的列表(userId,ojId)

    ArrayList<DoOjTable> DoOjByUserId(int userId);

    int queryIdByTopic(String Topic);

    List<OJDto> sreachProblem(@Param("sreachcontent") String sreachcontent);

    List<OJDto> changeDifficulty(String difficulty);

    String problemName(int id);

    OJDto NowOjDto(int id);

    List<String> heatTop3Name(List<Integer> list);

    List<OJDto> ojTopSum(int Num,ArrayList<OJDto> recomLists);      //Num传进来也就是少了多少个，就是选多少个提交人数排名前几的题目放入推荐中,推荐的不可以是在recomLists中有的

    List<OJDto> AllSimplicityOj(@Param("doOjTables") ArrayList<DoOjTable> doOjTables);

    List<OJDto> allOj(int userId,int StartingNumber);     //用与分页查询的和用户

    List<OJDto> CommonOJ(int StartingNumber);    //用分页查询查询出不登录用户的所有的题目

    Integer ojNum();

    Integer ojNumById(int userId);

    String ojDescription(int id);

    String ojCTemplateCode(int id, int cId);

    String ojCppTemplateCode(int id, int cppId);

    String ojJavaTemplateCode(int id, int javaId);

    String ojCReplaceStr(int id,int cId);

    String ojCppReplaceStr(int id,int cppId);

    String ojJavaReplaceStr(@Param("id") int id,@Param("javaId") int javaId);

    String ojCTestCode(int id,int cId);

    String ojCppTestCode(int id,int cppId);

    String ojJavaTestCode(int id,int javaId);

    String ojExpectedOutput(int id);

    int addSubmitNum(int ojId);     //提交人数增加

    int addSuccessNum(int ojId);   //成功人数增加

    Integer getSubmitNum(int userId);  //得到user的提交次数

    Integer getSuccessNum(int userId);  //得到user的成功次数

    int updateState(int userId,int ojId,int state);

    int insertState(int id, int userId, int ojId, int state);

    Integer isExistDoOj(int userId,int ojId);
}
